home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 050 / disk_425.arc / NEWDR2.PAS < prev    next >
Pascal/Delphi Source File  |  1985-04-03  |  767b  |  45 lines

  1. program newdr;    { -> 245 }
  2.  
  3. var    x,x2    : real;
  4.     alldone    : boolean;
  5.     error    : boolean;
  6.  
  7. procedure func(x: real;
  8.         var fx,dfx: real);
  9. begin
  10.   fx:=x*x-2.0;
  11.   dfx:=2.0*x
  12. end;    { func }
  13.  
  14. procedure newton(var x: real);
  15. const     tol    = 1.0E-6;
  16.  
  17. var    fx,dfx,dx,x1:    real;
  18.  
  19. begin    { newton }
  20.   repeat
  21.     x1:=x;
  22.     func(x,fx,dfx);
  23.     dx:=fx/dfx;
  24.     x:=x1-dx;
  25.     writeln('x=',x1,',fx=',fx,',dfx=',dfx);
  26.   until abs(dx)<=abs(tol*x)
  27. end;    { newton }
  28.  
  29. begin        { main program }
  30.   alldone:=false;
  31.   repeat
  32.     writeln;
  33.     write('First guess: ');    { first guess }
  34.     readln(x);
  35.     if x<-19.0 then alldone:=true
  36.     else
  37.       begin
  38.     newton(x);
  39.     writeln;
  40.     writeln('The solution is ',x);
  41.     writeln
  42.       end
  43.   until alldone
  44. end.
  45.